import {NzMessageService} from 'ng-zorro-antd';
import {Router} from '@angular/router';
import {Component} from '@angular/core';

/**
 * http请求的错误处理，包括401、404、500，其他情况均当做500处理
 *
 * 使用时
 1、在所需页面的constructor中加上 private httpError: HttpError，如：
 constructor( private router: Router,
 　　　　　　　　　private nzMessage: NzMessageService,
 　　　　　　　　　private httpError: HttpError){
   }
 2、在http请求的subscribe(data=>{})的大括号之后，加上 “，data => this.httpError.getError(data)”，如：
 　this.http.post(AppUrl.activity.myApplyUrl, {bId: localStorage.getItem('userid')}).subscribe(data => {
                let temp: any = data;
                console.log(temp.data);
            }, data => this.httpError.getError(data)
 );
 即可
 * */
@Component({
})
export class HttpError {
    constructor(private router: Router,
                private nzMessage: NzMessageService) {
    }

    public getError(data) {
        if (data.status == 401)
            this.nzMessage.error('登录信息失效，请重新登录', {nzDuration: 4000});
        else if (data.status == 404)
            this.router.navigate(['/pages/404']);
        else
            this.router.navigate(['/pages/500']);
    }
}
